<cffunction name="easySocket" access="private" returntype="any" hint="Uses Java Sockets to connect to a remote socket over TCP/IP" output="false">

    <cfargument name="host" type="string" required="yes" default="#musHost#" hint="Host to connect to and send the message">
    <cfargument name="port" type="numeric" required="Yes" default="#musPort#" hint="Port to connect to and send the message">
    <cfargument name="message" type="string" required="yes" default="" hint="The message to transmit">

    <cfset var result = "">
    <cfset var socket = createObject( "java", "java.net.Socket" )>
    <cfset var streamOut = "">
    <cfset var output = "">
    <cfset var input = "">

    <cftry>
        <cfset socket.init(arguments.host,arguments.port)>
        <cfcatch type="Object">
            <cfset result = "#cfcatch.Message#<br>Could not connected to host <strong>#arguments.host#</strong>, port <strong>#arguments.port#</strong>.">
            <cfreturn result>
        </cfcatch>
    </cftry>

    <cfif socket.isConnected()>
        <cfset streamOut = socket.getOutputStream()>

        <cfset output = createObject("java", "java.io.PrintWriter").init(streamOut)>
        <cfset streamInput = socket.getInputStream()>

        <cfset inputStreamReader= createObject( "java", "java.io.InputStreamReader").init(streamInput)>
        <cfset input = createObject( "java", "java.io.BufferedReader").init(InputStreamReader)>

        <cfset output.println(arguments.message)>
        <cfset output.println()>
        <cfset output.flush()>

        <cfset result=input.readLine()>
        <cfset socket.close()>
    <cfelse>
        <cfset result = "Could not connected to host <strong>#arguments.host#</strong>, port <strong>#arguments.port#</strong>.">
    </cfif>

    <cfreturn result>
</cffunction>
